# 找出两个数组的交集
def find_intersection(nums1, nums2):
    """
    找出两个数组的交集

    参数：
    - nums1：第一个数组
    - nums2：第二个数组

    返回值：
    - 两个数组的交集
    """
    # 复制数组以避免修改原始数组
    temp_nums1 = nums1.copy()
    temp_nums2 = nums2.copy()

    # 对数组进行排序
    temp_nums1.sort()
    temp_nums2.sort()

    # 初始化结果列表
    ret = []

    # 初始化两个指针
    i = j = 0

    # 遍历两个数组
    while i < len(temp_nums1) and j < len(temp_nums2):
        # 如果两个指针指向的元素相等
        if temp_nums1[i] == temp_nums2[j]:
            # 将该元素添加到结果列表中
            ret.append(temp_nums1[i])

            # 跳过重复元素
            while i < len(temp_nums1) - 1 and temp_nums1[i] == temp_nums1[i + 1]:
                i += 1
            while j < len(temp_nums2) - 1 and temp_nums2[j] == temp_nums2[j + 1]:
                j += 1

            # 移动指针
            i += 1
            j += 1

        # 如果第一个数组的元素小于第二个数组的元素
        elif temp_nums1[i] < temp_nums2[j]:
            # 移动第一个数组的指针
            i += 1

        # 如果第一个数组的元素大于第二个数组的元素
        else:
            # 移动第二个数组的指针
            j += 1

    # 返回结果列表
    return ret



print(find_intersection([1, 1, 2, 2, 2, 3, 4], [2, 2, 4, 5, 6, 6]))
print(find_intersection([1, 1, 3, 2, 5, 2, 3, 5], [1, 2, 7, 5, 6, 6]))
